package fgin

import (
	"context"
	"fmt"

	"github.com/redis/go-redis/v9"
)

var (
	redisClient  redis.UniversalClient
	redisClients = make(map[string]redis.UniversalClient)
)

func initRedis() {
	if len(fginConfig.Redis) == 0 {
		// 没有配置redis
		return
	}
	// 使用go-redis底层默认的连接池，以及读写超时控制
	for i, v := range fginConfig.Redis {
		if v.RedisName == "" {
			panic("redis初始化失败,存在redis_name配置为空")
		}
		redisClients[v.RedisName] = redis.NewUniversalClient(&redis.UniversalOptions{
			PoolFIFO: true, // 使用FIFO策略，防止连接池使用不均衡
			Addrs:    v.Addrs,
			Username: v.UserName,
			Password: v.PassWord,
			DB:       v.Db,
		})
		// 兼容v1，曾经只能使用一个redis
		if i == 0 {
			redisClient = redisClients[v.RedisName]
		}
		// 检测redis
		if err := redisClients[v.RedisName].Ping(context.Background()).Err(); err != nil {
			panic(fmt.Sprintf("redis %s 初始化失败,err:%s", v.RedisName, err.Error()))
		}
	}
}
